package com.foftact.blockposition.mapper;

import com.foftact.blockposition.BlockPosition;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * 板块成分股Mapper接口
 * 用于操作blockposition表
 */
@Mapper
public interface BlockPositionMapper {
    /**
     * 插入单条板块成分股数据
     * @param blockPosition 板块成分股数据对象
     * @return 插入的行数
     */
    int insert(BlockPosition blockPosition);

    /**
     * 批量插入板块成分股数据
     * @param blockPositions 板块成分股数据列表
     * @return 插入的行数
     */
    int batchInsert(@Param("list") List<BlockPosition> blockPositions);

    /**
     * 根据市场码和股票代码查询板块成分股数据
     * @param marketCode 市场码
     * @param code 股票代码
     * @return 板块成分股数据对象
     */
    BlockPosition selectByMarketCodeAndCode(@Param("marketCode") Integer marketCode, @Param("code") String code);

    /**
     * 根据板块代码查询板块成分股数据列表
     * @param blockCode 板块代码
     * @return 板块成分股数据列表
     */
    List<BlockPosition> selectByBlockCode(String blockCode);

    /**
     * 查询所有板块成分股数据
     * @return 板块成分股数据列表
     */
    List<BlockPosition> selectAll();

    /**
     * 根据市场码和股票代码更新板块成分股数据
     * @param blockPosition 板块成分股数据对象
     * @return 更新的行数
     */
    int updateByMarketCodeAndCode(BlockPosition blockPosition);

    /**
     * 插入或更新板块成分股数据
     * @param blockPosition 板块成分股数据对象
     * @return 操作的行数
     */
    int insertOrUpdate(BlockPosition blockPosition);

    /**
     * 删除超过指定天数的数据
     * @param days 天数
     * @return 删除的行数
     */
    int deleteOldData(@Param("days") int days);
}